#codigo de cabecera --> para ello instalamos geopandas en "open terminal"
import os, geopandas as gpd
# país elegido:
peru = gpd.read_file(os.path.join("mapasPeru","DEPARTAMENTOS","DEPARTAMENTOS.shp"))
#damos nombres a nuestros shapefiles
ciudades = gpd.read_file(os.path.join("mapasPeru","Cap_Provincia","Cap_Provincia.shp"))
areasUrbanasNacionales = gpd.read_file(os.path.join("mapasPeru","ANP Nacional Definitivas","ANPNacionalDefinitivas.shp"))
areasUrbanasPrivadas = gpd.read_file(os.path.join("mapasPeru","Áreas de Conservación Privada","AreasdeConservacionPrivada.shp"))
UH = gpd.read_file(os.path.join("mapasPeru","file_uh","UH.shp"))
zonaAmortiguamiento = gpd.read_file(os.path.join("mapasPeru","Zonas de Amortiguamiento","ZonasdeAmortiguamiento.shp"))
# "mapasPeru" --> carpeta donde guardamos los archivos .rar y los que descomprimimos
# OJO: la extensión ".shp" es utilizado para almacenar información geográfica y espacial
type(peru)
geopandas.geodataframe.GeoDataFrame
type(ciudades)
geopandas.geodataframe.GeoDataFrame
type(areasUrbanasNacionales)
geopandas.geodataframe.GeoDataFrame
type(areasUrbanasPrivadas)
geopandas.geodataframe.GeoDataFrame
type(UH)
geopandas.geodataframe.GeoDataFrame
type(zonaAmortiguamiento)
geopandas.geodataframe.GeoDataFrame
# dimensiones de "peru"
peru.shape
(25, 5)
# names
peru.columns
# 'Id' --> identificador único para cada registro de la capa de datos geoespaciales
# 'geometry' --> contiene información geográfica y espacial del país "china", como puntos, líneas o polígonos
Index(['IDDPTO', 'DEPARTAMEN', 'CAPITAL', 'FUENTE', 'geometry'], dtype='object')
# contenido de "peru"
peru.head()
| IDDPTO | DEPARTAMEN | CAPITAL | FUENTE | geometry | |
|---|---|---|---|---|---|
| 0 | 01 | AMAZONAS | CHACHAPOYAS | INEI | POLYGON ((-77.81211 -2.98962, -77.81332 -2.990... |
| 1 | 02 | ANCASH | HUARAZ | INEI | POLYGON ((-77.64692 -8.05086, -77.64669 -8.052... |
| 2 | 03 | APURIMAC | ABANCAY | INEI | POLYGON ((-73.74632 -13.17456, -73.74570 -13.1... |
| 3 | 04 | AREQUIPA | AREQUIPA | INEI | POLYGON ((-71.98109 -14.64062, -71.98093 -14.6... |
| 4 | 05 | AYACUCHO | AYACUCHO | INEI | POLYGON ((-74.34843 -12.17503, -74.35000 -12.1... |
# contenido de "ciudades"
ciudades.head()
| Cod_IGN | Rasgo_Prin | Categoria | Nombre | Provincia | Departa | X | Y | Cod_Provin | Cod_Depart | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | CO230 | Capital | CIUDAD | CHIQUIAN | BOLOGNESI | ANCASH | -77.15604 | -10.15124 | 0205 | 02 | POINT (-77.15604 -10.15124) |
| 1 | CO230 | Capital | CIUDAD | HUARMEY | HUARMEY | ANCASH | -78.15162 | -10.06955 | 0211 | 02 | POINT (-78.15162 -10.06955) |
| 2 | CO230 | Capital | PUEBLO | OCROS | OCROS | ANCASH | -77.39566 | -10.40240 | 0214 | 02 | POINT (-77.39566 -10.40240) |
| 3 | CO230 | Capital | CIUDAD | AMBO | AMBO | HUÁNUCO | -76.20437 | -10.12965 | 1002 | 10 | POINT (-76.20437 -10.12965) |
| 4 | CO230 | Capital | PUEBLO | JESUS | LAURICOCHA | HUÁNUCO | -76.63042 | -10.07898 | 1010 | 10 | POINT (-76.63042 -10.07898) |
# contenido de "areasUrbanasNacionales"
areasUrbanasNacionales.head()
| objectid_1 | anp_gid | anp_codi | anp_cate | anp_nomb | anp_sect | anp_ubpo | anp_suleg | anp_uicn | anp_balec | anp_felec | anp_balem | anp_felem | anp_obs | met_link | anp_orden | anp_id | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 17163 | 1 | BP01 | Bosque de Protección | Aledaño a la Bocatoma del Canal Nuevo Imperial | NaN | Lima | 18.11 | VI - Uso sostenible de recursos naturales | R.S. N° 0007-1980-AA/DGFF | 1980-05-19 | NaN | NaN | NaN | NaN | 85 | 85 | POLYGON ((-76.21944 -13.04386, -76.21934 -13.0... |
| 1 | 17219 | 57 | RN13.09 | Reserva Nacional | Sistema de Islas, Islotes y Puntas Guaneras - ... | NaN | Ancash | 2953.89 | VI - Uso sostenible de recursos naturales | D.S. N° 024-2009-MINAM | 2009-12-31 | NaN | NaN | NaN | NaN | 53 | 53 | POLYGON ((-78.22908 -9.94976, -78.22902 -9.949... |
| 2 | 17164 | 2 | BP02 | Bosque de Protección | Puquio Santa Rosa | NaN | La Libertad | 72.50 | VI - Uso sostenible de recursos naturales | R.S. N° 0434-1982-AG/DGFF | 1982-09-02 | NaN | NaN | NaN | NaN | 86 | 86 | POLYGON ((-78.72574 -8.60734, -78.72574 -8.607... |
| 3 | 17165 | 3 | BP03 | Bosque de Protección | de Pui Pui | NaN | Junín | 60000.00 | VI - Uso sostenible de recursos naturales | R.S. N° 0042-1985-AG/DGFF | 1985-01-31 | NaN | NaN | NaN | NaN | 87 | 87 | POLYGON ((-74.89181 -11.26586, -74.89166 -11.2... |
| 4 | 17193 | 27 | RC03 | Reserva Comunal | Amarakaeri | NaN | Madre de Dios | 402335.62 | VI - Uso sostenible de recursos naturales | D.S. N° 031-2002-AG | 2002-05-09 | NaN | NaN | NaN | NaN | 75 | 75 | POLYGON ((-71.08318 -12.58558, -71.08371 -12.5... |
# contenido de "areasUrbanasPrivadas"
areasUrbanasPrivadas.head()
| objectid_1 | anp_gid | acp_codi | acp_nomb | acp_suleg | acp_balec | acp_felec | acp_balem | acp_felem | acp_fecad | acp_ubpo | acp_titu | acp_tipro | acp_tirec | acp_pareg | acp_obs | met_link | acp_orden | acp_id | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 17538 | 376 | ACP168 | Yasgolca-Santa Lucia, Montevideo | 4725.69 | R.M. N° 065-2023-MINAM | 2023-02-22 | NaN | NaN | Perpetuo | AMAZONAS | Comunidad Campesina Montevideo | Comunidad Campesina | Perpetuo | P.E. N° 02013530 | NaN | NaN | 168 | 162 | POLYGON ((-77.73072 -6.62838, -77.73071 -6.628... |
| 1 | 17539 | 378 | ACP169 | Pampacorral | 767.56 | R.M. N° 066-2023-MINAM | 2023-02-22 | NaN | NaN | 22/02/2033 | CUSCO | Comunidad Campesina Pampa Corral | Comunidad Campesina | 10 | P.E. N° 11044013 | NaN | NaN | 169 | 163 | POLYGON ((-71.97863 -13.15968, -71.97163 -13.1... |
| 2 | 17540 | 377 | ACP170 | Utco | 3060.36 | R.M. N° 067-2023-MINAM | 2023-02-22 | NaN | NaN | Perpetuo | CAJAMARCA | Comunidad Campesina de Utco | Comunidad Campesina | Perpetuo | P.E. N° 02286473 | NaN | NaN | 170 | 164 | POLYGON ((-78.00429 -6.91381, -78.00488 -6.914... |
| 3 | 17405 | 299 | ACP62 | Bosques de Neblina y Páramos de Samanga | 2888.03 | R.M. N° 117-2013-MINAM | 2013-04-18 | NaN | NaN | 2023-04-18 | PIURA | Comunidad Campesina Samanga | Comunidad Campesina | 10 | NaN | NaN | NaN | 62 | 104 | POLYGON ((-79.42841 -4.75096, -79.42883 -4.751... |
| 4 | 17466 | 298 | ACP61 | Bosque Berlín | 59.00 | R.M. N° 073-2013-MINAM | 2013-03-04 | NaN | NaN | 2023-03-04 | AMAZONAS | José Ricardo Rimarachin Altamirano | Privado | 10 | NaN | NaN | NaN | 61 | 103 | POLYGON ((-78.42162 -5.91087, -78.42121 -5.911... |
# contenido de "UH"
UH.head()
| OBJECTID | ID | NIVEL1 | NIVEL2 | NIVEL3 | NIVEL4 | NIVEL5 | NIVEL6 | NIVEL7 | NOMB_UH_N1 | ... | NOMB_UH_N5 | NOMB_UH_N6 | NOMB_UH_N7 | CODIGO | NOMBRE | ORDEN | AREA_KM2 | Shape_Leng | Shape_Area | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 132 | 125 | 1 | 13 | 139 | 1394 | NaN | NaN | NaN | Región Hidrografica del Pacífico | ... | NaN | NaN | NaN | 1394 | Cuenca Tumbes | 61 | 1806.1527 | 3.353455 | 0.147947 | POLYGON ((-80.43131 -3.51183, -80.43202 -3.511... |
| 1 | 1 | 139 | 4 | 49 | 496 | 4964 | NaN | NaN | NaN | Región Hidrográfica del Amazonas | ... | NaN | NaN | NaN | 4964 | Cuenca Tarau | 74 | 2547.2750 | 3.376721 | 0.211003 | POLYGON ((-72.31743 -10.47817, -72.31814 -10.4... |
| 2 | 2 | 140 | 4 | 49 | 496 | 4969 | NaN | NaN | NaN | Región Hidrográfica del Amazonas | ... | NaN | NaN | NaN | 4969 | Intercuenca Alto Yurúa | 75 | 9010.3846 | 5.095023 | 0.746001 | POLYGON ((-72.17422 -10.00017, -72.17327 -10.0... |
| 3 | 3 | 136 | 4 | 49 | 492 | 4926 | 49269 | NaN | NaN | Región Hidrográfica del Amazonas | ... | Alto Acre | NaN | NaN | 49269 | Intercuenca Alto Acre | 71 | 2492.3716 | 3.478442 | 0.207434 | POLYGON ((-69.42633 -11.18493, -69.42708 -11.1... |
| 4 | 4 | 137 | 4 | 49 | 492 | 4928 | 49289 | NaN | NaN | Región Hidrográfica del Amazonas | ... | Alto Iaco | NaN | NaN | 49289 | Intercuenca Alto Iaco | 72 | 1741.9667 | 2.487195 | 0.144711 | MULTIPOLYGON (((-70.56941 -10.97065, -70.56955... |
5 rows × 23 columns
# contenido de "zonaAmortiguamiento"
zonaAmortiguamiento.head()
| objectid_1 | c_nomb | anp_codi | anp_nomb | za_super | za_pvpm | za_balea | za_felea | za_balem | za_felem | za_baler | za_feler | za_obs | g_docreg | g_fecreg | geometry | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 5840 | Reserva Comunal | RC04 | Ashaninka | 325684.030089 | 2019-2023 | R.P. Nº 239-2012-SERNANP | 2012-12-28 | NaN | NaN | R.P. N° 034-2019-SERNANP | 2019-01-29 | Control topologico segùn informe N° 328-2020-S... | Informe Nº 238-2020-SERNANP-DDE | 2020-06-22 | POLYGON ((-73.82264 -12.47341, -73.82234 -12.4... |
| 1 | 5841 | Bosque de Protección | BP03 | de Pui Pui | 45367.201144 | 2019-2023 | R.J. Nº 285-2008 INRENA | 2008-10-28 | NaN | NaN | R.P. N° 033-2019-SERNANP | 2019-01-29 | Control topologico segùn informe N° 328-2020-S... | Informe Nº 238-2020-SERNANP-DDE | 2020-06-22 | POLYGON ((-75.13986 -11.09688, -75.13935 -11.0... |
| 2 | 5842 | Reserva Nacional | RN12 | Matsés | 231397.756087 | 2023-2027 | R.P. Nº 054-2014-SERNANP-J | 2014-02-27 | NaN | NaN | R.P N° 320-2022-SERNANP | 2022-12-29 | Control topologico segùn informe N° 328-2020-S... | Informe Nº 238-2020-SERNANP-DDE | 2020-06-22 | POLYGON ((-73.66013 -4.99800, -73.65788 -4.998... |
| 3 | 5843 | Reserva Nacional | RN10 | Allpahuayo Mishana | 65956.533504 | 2022-2026 | R.J. Nº 159-2007 INRENA | 2007-07-24 | NaN | NaN | R.P. N° 082-2022-SERNANP | 2022-03-15 | Control topologico segùn informe N° 328-2020-S... | Informe Nº 238-2020-SERNANP-DDE | 2020-06-22 | POLYGON ((-73.40232 -3.77420, -73.39253 -3.788... |
| 4 | 5844 | Reserva Nacional | RN06 | de Salinas y Aguada Blanca | 310242.095749 | 2016-2020 | R.J. Nº 087-2007 INRENA | 2007-04-26 | NaN | NaN | R.P. N° 257-2016-SERNANP | 2016-09-14 | Control topologico segùn informe N° 328-2020-S... | Informe Nº 238-2020-SERNANP-DDE | 2020-06-22 | POLYGON ((-71.18976 -15.68114, -71.13361 -15.7... |
# tipo de datos de "peru"
peru.info()
<class 'geopandas.geodataframe.GeoDataFrame'> RangeIndex: 25 entries, 0 to 24 Data columns (total 5 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 IDDPTO 25 non-null object 1 DEPARTAMEN 25 non-null object 2 CAPITAL 25 non-null object 3 FUENTE 25 non-null object 4 geometry 25 non-null geometry dtypes: geometry(1), object(4) memory usage: 1.1+ KB
# "folium" --> biblioteca de Python utilizada para crear mapas interactivos y visualizaciones de datos geoespaciales
import folium
# creamos una visualización gráfica de los datos contenidos en el marco de datos "peru"
peru.plot()
<Axes: >
# creamos una visualización gráfica de los datos contenidos en el marco de datos "ciudades"
ciudades.plot()
<Axes: >
# creamos una visualización gráfica de los datos contenidos en el marco de datos "areasUrbanasNacionales"
areasUrbanasNacionales.plot()
<Axes: >
# creamos una visualización gráfica de los datos contenidos en el marco de datos "areasUrbanasPrivadas"
areasUrbanasPrivadas.plot()
<Axes: >
# creamos una visualización gráfica de los datos contenidos en el marco de datos "UH"
UH.plot()
<Axes: >
# creamos una visualización gráfica de los datos contenidos en el marco de datos "zonaAmortiguamiento"
zonaAmortiguamiento.plot()
<Axes: >
peru.plot(facecolor="azure", # color del relleno del polígono (parte interna)
edgecolor='black', # color de las líneas
linewidth=0.1) # grosor de las líneas
<Axes: >
ciudades.plot(marker='.', # tipo de marcador
color='red',
markersize=7,
alpha=0.3) # transpariencia
<Axes: >
areasUrbanasNacionales.plot(marker='p', # tipo de marcador
color='black',
markersize=3,
edgecolor='black',
linewidth=1,
alpha=0.2)
<Axes: >
areasUrbanasPrivadas.plot(marker='p', # tipo de marcador
color='none',
markersize=2,
edgecolor='green',
linewidth=1,
alpha=0.7)
<Axes: >
zonaAmortiguamiento.plot(marker='x', # tipo de marcador circular
color='deeppink',
markersize=7, # aumentar tamaño del marcador
alpha=0.5) # aumentar la transparencia
<Axes: >
# codigo para empezar a suponerponer los mapas
ciudades = ciudades.to_crs(peru.crs)
areasUrbanasNacionales = areasUrbanasNacionales.to_crs(peru.crs)
areasUrbanasPrivadas = areasUrbanasPrivadas.to_crs(peru.crs)
zonaAmortiguamiento = zonaAmortiguamiento.to_crs(peru.crs)
# comenzamos creando la capa en la parte posterior (la base) y agregar capas en la parte superior
# generamos una visualización espacial en la que superponemos tres capas de información geográfica en un mismo gráfico:
# NOTA: el orden de las líneas y polígonos importa ya que si se superponen unos encima de otros,
# el que esté debajo no se mostrará, por tanto: es necesario asegurarse de que todos los elementos se superpongan bien
# denominamos a nuestra imagen base como "baseMapa"
baseMapa = peru.plot(facecolor="azure", edgecolor='black', linewidth=0.1, figsize=(12,12))
areasUrbanasNacionales.plot(marker='p', color='black', markersize=3, edgecolor='black', linewidth=1, alpha=0.2, ax=baseMapa)
zonaAmortiguamiento.plot(marker='x', color='deeppink', markersize=7, alpha=0.5, ax=baseMapa)
areasUrbanasPrivadas.plot(marker='p', color='none', markersize=2, edgecolor='green', linewidth=1, alpha=1, ax=baseMapa)
ciudades.plot(marker='.', color='red', markersize=7, alpha=1, ax=baseMapa)
# agregamos título y leyenda a nuestro mapa del país: "Peru"
baseMapa.set_title("Mapa del Perú", fontsize=20)
Text(0.5, 1.0, 'Mapa del Perú')
# como hemos importado "folium", podemos hacer un mapa interacivo, ya que
# una buena característica sería representar el mapa de forma interactiva:
import folium
m = ciudades.explore(color="red", name="ciudades")
m = areasUrbanasNacionales.explore(m=m, color="black", name="areasUrbanasNacionales")
m = areasUrbanasPrivadas.explore(m=m, color="green", name="areasUrbanasPrivadas")
m = zonaAmortiguamiento.explore(m=m, color="deeppink", name="zonaAmortiguamiento")
# mapa interactivo que permite al usuario activar y desactivar diferentes capas de información en el mapa
folium.LayerControl().add_to(m)
m